package com.pds.web.monitor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pds.web.monitor.domain.*;
import com.pds.web.monitor.dto.TaskDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface IPdsMonitorTaskService extends IService<PdsMonitorTask> {
    /**
     * 添加检测任务
     * @param pdsMonitorTask
     * @return
     */
    PdsMonitorTask addTask(PdsMonitorTask pdsMonitorTask);

    /**
     * 删除检测任务
     * @param id
     * @return
     * @throws Exception
     */
    Boolean deleteTask(Long id) throws Exception;

    /**
     * 查询检测任务
     * @param taskDTO
     * @return
     * @throws Exception
     */
    List<Map> listAll(TaskDTO taskDTO) throws Exception;

    /**
     * 通过id查询检测任务信息
     * @param id
     * @return
     */
    Map queryById(Long id);


    /**
     * 检测机构-检测任务负责人,接收任务、分配人员
     * @param map
     *          -taskId 任务ID
     *          -taskCode 任务编码
     *          -guidanceId 检测因子ID，多个逗号分割
     *          -samplerId 采样人员id
     *          -analysisId 分析人员id
     *          reportWriterId 报告撰写人id
     * @return
     */
    void receiveTask(Map map) throws Exception;

    /**
     * 变更人员配置
     * @param map
     */
    void changeUser(Map map) throws Exception;



    /**
     * 采样提交
     * @param report
     *  @param status 2采样提交、3实验室分析提交、4报告提交，进入审核
     */
    void samplingSubmit(PdsMonitorTaskReport report,String status) throws Exception;



    /**
     * 环保局审核
     * @param map
     *          - taskId 任务id
     *          - type 1审核通过、2审核退回
     *          - epbScore 评分
     *          - remark 退回原因
     */
    void approve(Map map) throws Exception;


    /**
     * 审核退回时，修改任务内容
     * @param map
     *          -taskId					任务id
     *          -taskName				任务名称
     *          -taskCode				任务编号
     *          -contractFileId			合同附件ID
     *          -guidanceId				检测因子
     *          -samplingRecordFileId	采样记录文件id,多个用逗号分割
     *          -sceneAnalysisFileId	现场分析记录文件id,多个用逗号分割
     *          -laboratAnalysisFileId	实验室分析记录文件id,多个用逗号分割
     *          -reportResultFileId		检测报告文件id,多个用逗号分割
     * @return
     * @throws Exception
     */
    void edit(Map map) throws Exception;

    /**
     * 企业给检测任务评分
     * @param map
     *          - taskId 任务id
     *          - enScore 企业评分
     * @return
     * @throws Exception
     */
    void enScore(Map map) throws Exception;

    /**
     * web端首页待办查询
     * 检查任务
     * 运维任务
     * @return
     */
    Map getTask() throws Exception;
}
